package MiddlePractice;

public class Demo238 {
	
//	238. 除自身以外数组的乘积
//	给你一个长度为 n 的整数数组 nums，其中 n > 1，返回输出数组 output ，其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

	
	public int[] productExceptSelf(int[] nums) {
		int prod = 1;
		int zeroNum = 0;
		for(int i=0; i<nums.length; i++) {
			if(nums[i] == 0) {
				zeroNum++;
				if(zeroNum >= 2) {
					break;
				}
				continue;
			}
			prod *= nums[i];
		}
		
		if(zeroNum >= 2) {
			return new int[nums.length];
		} else if(zeroNum == 1) {
			for(int i=0; i<nums.length; i++) {
				if(nums[i] != 0) {
					nums[i] = 0;
				} else {
					nums[i] = prod;
				}
			}
		} else {
			for(int i=0; i<nums.length; i++) {
				nums[i] = prod / nums[i];
			}
		}
		return nums;
    }
}
